草庐IT

C++ volatile 放置 新

全部标签

c++ - 使用 volatile 来防止基准测试代码中的编译器优化?

我正在创建一个小程序来测量boost::shared_ptr和boost::intrusive_ptr类型容器之间的性能差异。为了防止编译器优化拷贝,我将变量声明为volatile。循环看起来像这样://TestCopymeasuresthetimerequiredtocreatencopiesofthegivencontainer.//Returnstimeinmilliseconds.templatetime_tTestCopy(constContainer&inContainer,std::size_tn){Poco::Stopwatchstopwatch;stopwatch.s

c++ - 如果我在互斥量之间声明一个变量并返回它,是否需要使用 volatile 关键字?

假设我有以下功能。std::mutexmutex;intgetNumber(){mutex.lock();intsize=someVector.size();mutex.unlock();returnsize;}这是在声明大小时使用volatile关键字的地方吗?如果我不使用volatile,返回值优化或其他东西会破坏这段代码吗?someVector的大小可以从程序拥有的众多线程中的任何一个更改,并且假定只有一个线程(修饰符除外)调用getNumber()。 最佳答案 没有。但请注意,大小可能无法反射(reflect)互斥锁释放后的

c++ - 是否在 C++ 中访问未从函数可观察行为外部访问的 volatile 局部变量?

在C++03中,标准可观察行为(1.9/6)包括读取和写入volatile数据。现在我有了这个代码:intmain(){constvolatileintvalue=0;if(value){}return0;}正式初始化一个volatile变量,然后读取它。VisualC++10发出机器代码,通过将dword压入栈中腾出空间,然后将零写入该栈位置,然后读取该位置。对我来说这没有任何意义-没有其他代码或硬件可能知道局部变量的位置(因为它在自动存储中),因此期望该变量可能已被任何其他方读取/写入是不合理的所以在这种情况下可以消除它。是否允许消除此变量访问?访问一个volatilelocal的

c++ - boost::make_shared 不是在调用(放置)运算符 new 吗?

我第一次使用boost::make_shared来创建共享指针指向的对象。主要是因为我们的代码太慢了,单次分配确实有助于boost性能。在以“硬手动方式”修复了一些内存泄漏之后,我决定通过覆盖所有相关类的新运算符来实现一个简单的内存泄漏检测器,仅用于计算在我们的应用程序的特定点哪些对象仍然存在。我之前已经实现过几次,惊讶地发现我的代码不再检测到任何对象。我认为我所要做的就是覆盖“placementnew”而不是“normal”operatornew,因为make_shared的boost网站文档中有以下内容:"Effects:Allocatesmemorysuitableforanob

如何将文本包裹在放置在文本块末尾的图像上?

我想做的是由“浮动”此图中的插图打开了帖子https://css-tricks.com/all-about-floats/:我想将图像放在文本块的末端,以便图像的底部与文本的最后一行的基线对齐,并将其推入文本和围绕其流动的文本。使用float:right但是,我能够实现的最好的方法是悬挂在段落底部的图像,而不是将其推入其中的图像,如图所示。有关于如何使用的描述float:left在许多地方,但我在CSS-Tricks帖子中没有发现任何地方,或者其他地方都解释了如何使用图像围绕图像的定位和包裹float:right-这就是我要实现的目标。有人知道该怎么做吗?看答案简而言之,您无法在没有一些标记更

C++ volatile 多线程变量

我正在编写一个C++应用程序。我有一个类变量,多个线程正在写入。在C++中,任何可以在编译器“意识到”它正在被更改的情况下被修改的东西都需要标记为volatile,对吧?因此,如果我的代码是多线程的,并且一个线程可能写入var而另一个线程从中读取,我是否需要标记varvolaltile?[我没有竞争条件,因为我依赖对整数的原子写入]谢谢! 最佳答案 C++还没有任何多线程的规定。在实践中,volatile并没有按照你的意思去做(它是为内存寻址硬件设计的,虽然这两个问题很相似,但它们的不同之处足以使volatile不能做正确的事情——

c++ - 如何检查 stringstream>>string 是否不会在字符串上放置任何内容?

例如,当解析一个文本文件时,有时这个文件有这样的东西:keywordastringherekeywordanotherstringkeywordkeywordagainastring请注意,第3行有一个空字符串(无或空格)。问题是当您执行stringstream>>laststring时,stringstream有一个空字符串(null或只有空格),它不会覆盖“laststring”,它什么都不做。无论如何要事先检查一下这种情况?我不想创建一个临时空字符串只是为了检查它在stringstream之后是否仍然是空的>>,看起来很蹩脚。 最佳答案

ios - 随机放置的 UILabel 旋转后尺寸错误

有一个UIVew容器,用于随机生成、旋转并放置到该View中的多个UILabel,如果我使用角度0、90、180、270看起来不错,但如果角度随机生成的标签看起来展开,这对我来说是个问题因为单词应该放置得非常近并且没有交集,所以生成器看起来是这样的:-(void)generate:(UIView*)containerwords:(NSArray*)wordscolors:(NSArray*)colorsminFontSize:(float)minSizemaxFontSize:(float)maxSizerotateWords:(BOOL)rotateuseAngleRange:(BO

ios - 自动布局以放置 4 个相同宽度的 View

我正在使用自动布局。我想将View高度设置为等于另一个View的宽度。棕色View的宽度设置为与其父View成比例的0.3,绿色View的高度应与棕色View的宽度相同。我已将约束设置为4个View,但4个View的宽度不相同请引用图片。 最佳答案 Obj-cNSLayoutConstraint*constraint=[NSLayoutConstraintconstraintWithItem:greenViewattribute:NSLayoutAttributeHeightrelatedBy:NSLayoutRelationEqu

iOS - 如何水平居中放置未知数量的不同尺寸的 subview 。

我遇到了一个问题,我相信你们中的某个人可以帮助我解决。我正在使用Swift3开发一个iOS应用程序,我试图创建的是这样的:Screenshot1Screenshot2屏幕截图仅显示了我的UIViewcontroller的一部分。剩余的空间填充了不属于问题的其他View。如您所见,我的subview(图标)的大小和位置取决于我给出的图标数量(不超过8个)。如果存在超过5个图标,它应该创建第二行并减小图标的大小以适应空间。我的观点应该始终居中,这意味着它们均匀分布在左右两侧。到目前为止我尝试了什么:我创建了一个水平StackView并尝试以编程方式填充它,但这并没有解决超过5个View的问